<html>
<head><meta charset="utf-8"><title>Cron Job Failure 2021-03-24 · miri · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/index.html">miri</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html">Cron Job Failure 2021-03-24</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="231592082"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231592082" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> miri cronjobs <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231592082">(Mar 24 2021 at 07:14)</a>:</h4>
<p>Dear <span class="user-mention" data-user-id="120791">@RalfJ</span> and <span class="user-mention" data-user-id="124288">@oli</span></p>
<p>It would appear that the Miri cron job build failed. Would you mind investigating this issue?</p>
<p>Thanks in advance!<br>
Sincerely,<br>
The Miri Cronjobs Bot</p>



<a name="231620664"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231620664" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231620664">(Mar 24 2021 at 11:51)</a>:</h4>
<p>Oh fun, this is an ICE with <code>-Z mir-opt-level=4</code></p>



<a name="231620807"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231620807" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231620807">(Mar 24 2021 at 11:52)</a>:</h4>
<blockquote>
<p>error: internal compiler error: /usr/share/rust/.rustup/toolchains/master/lib/rustlib/src/rust/compiler/rustc_mir/src/interpret/eval_context.rs:188:17: The type checker should prevent reading from a never-written local</p>
</blockquote>



<a name="231620836"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231620836" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231620836">(Mar 24 2021 at 11:52)</a>:</h4>
<p>must be some new MIR optimization? Cc <span class="user-group-mention" data-user-group-id="1162">@WG-mir-opt</span></p>



<a name="231620979"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231620979" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231620979">(Mar 24 2021 at 11:54)</a>:</h4>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="k">struct</span> <span class="nc">Foo</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="n">_inner</span>: <span class="kt">i32</span><span class="p">,</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>

<span class="k">fn</span> <span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="k">unsafe</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">        </span><span class="kd">let</span><span class="w"> </span><span class="n">foo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Foo</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">            </span><span class="n">_inner</span>: <span class="nc">std</span>::<span class="n">mem</span>::<span class="n">uninitialized</span><span class="p">(),</span><span class="w"></span>
<span class="w">        </span><span class="p">};</span><span class="w"></span>
<span class="w">        </span><span class="kd">let</span><span class="w"> </span><span class="n">_bar</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">foo</span><span class="p">;</span><span class="w"></span>
<span class="w">    </span><span class="p">}</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</code></pre></div>
<p>now has MIR</p>
<div class="codehilite"><pre><span></span><code>    bb0: {
        _4 = assert_uninit_valid::&lt;i32&gt;() -&gt; bb1; // scope 5 at tests/run-pass/move-uninit-primval.rs:10:21: 10:46
                                         // mir::Constant
                                         // + span: tests/run-pass/move-uninit-primval.rs:10:21: 10:46
                                         // + literal: Const { ty: unsafe extern &quot;rust-intrinsic&quot; fn() {std::intrinsics::assert_uninit_valid::&lt;i32&gt;}, val: Value(Scalar(&lt;ZST&gt;)) }
    }

    bb1: {
        _6 = assert_inhabited::&lt;i32&gt;() -&gt; bb2; // scope 8 at tests/run-pass/move-uninit-primval.rs:10:21: 10:46
                                         // mir::Constant
                                         // + span: tests/run-pass/move-uninit-primval.rs:10:21: 10:46
                                         // + literal: Const { ty: unsafe extern &quot;rust-intrinsic&quot; fn() {std::intrinsics::assert_inhabited::&lt;i32&gt;}, val: Value(Scalar(&lt;ZST&gt;)) }
    }

    bb2: {
        _7 = move (_5.1: std::mem::ManuallyDrop&lt;i32&gt;); // scope 8 at tests/run-pass/move-uninit-primval.rs:10:21: 10:46
        _2 = move (_7.0: i32);           // scope 9 at tests/run-pass/move-uninit-primval.rs:10:21: 10:46
        (_1.0: i32) = move _2;           // scope 1 at tests/run-pass/move-uninit-primval.rs:9:19: 11:10
        _3 = move _1;                    // scope 2 at tests/run-pass/move-uninit-primval.rs:12:20: 12:23
        return;                          // scope 0 at tests/run-pass/move-uninit-primval.rs:14:2: 14:2
    }
</code></pre></div>



<a name="231620992"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231620992" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231620992">(Mar 24 2021 at 11:54)</a>:</h4>
<p>indeed <code>_5</code> is never written to before it is read</p>



<a name="231621100"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231621100" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231621100">(Mar 24 2021 at 11:55)</a>:</h4>
<p>might be related to <a href="https://github.com/rust-lang/rust/issues/83177">#83177</a>?</p>



<a name="231621185"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231621185" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231621185">(Mar 24 2021 at 11:56)</a>:</h4>
<p>Cc <span class="user-mention" data-user-id="124288">@oli</span> (does <code>@tmiasko</code> have zulip?)</p>



<a name="231622803"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231622803" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231622803">(Mar 24 2021 at 12:12)</a>:</h4>
<p>it does not really fit though, these are not ZST in the testcase</p>



<a name="231623020"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231623020" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231623020">(Mar 24 2021 at 12:14)</a>:</h4>
<p>mir-opt-level=2 is fine, =3 has the same problem</p>



<a name="231623031"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231623031" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231623031">(Mar 24 2021 at 12:15)</a>:</h4>
<p>might be related to inlining <code>mem::uninitialized</code>, but why'd that change now?</p>



<a name="231623219"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231623219" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231623219">(Mar 24 2021 at 12:16)</a>:</h4>
<p>oh... yeah it's about the ZSTs. <code>mem::uninitialized</code> calls <code>MaybeUninit::uninit().assume_init()</code>, and <code>MaybeUninit::uninit()</code> is</p>
<div class="codehilite"><pre><span></span><code>    pub const fn uninit() -&gt; MaybeUninit&lt;T&gt; {
        MaybeUninit { uninit: () }
    }
</code></pre></div>



<a name="231623251"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231623251" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231623251">(Mar 24 2021 at 12:17)</a>:</h4>
<p>when that write disappears, we have a local without backing store being read from</p>



<a name="231623303"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231623303" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231623303">(Mar 24 2021 at 12:17)</a>:</h4>
<p>the backing store of locals is allocated lazily on first write to support unsized locals. it's a hack, but I don't see another way to support unsized locals. it'd be an even bigger hack to do lazy allocation <em>only</em> for unsized locals.</p>



<a name="231637658"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231637658" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tm <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231637658">(Mar 24 2021 at 13:58)</a>:</h4>
<p>"lazy allocation only for unsized locals" - isn't this exactly what unsized locals are about?</p>



<a name="231639296"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231639296" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tm <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231639296">(Mar 24 2021 at 14:06)</a>:</h4>
<p>Destination propagation ignores unions to avoid the issue in MIRI.</p>



<a name="231657910"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231657910" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> erikdesjardins <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231657910">(Mar 24 2021 at 15:49)</a>:</h4>
<p>it's easy enough to avoid removing assignments to union fields, but I'm not sure if that's sufficient</p>
<p>e.g. this</p>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="k">union</span> <span class="nc">Foo</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="n">x</span>: <span class="p">(),</span><span class="w"></span>
<span class="w">    </span><span class="n">y</span>: <span class="kt">u64</span><span class="p">,</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>

<span class="c1">// EMIT_MIR remove_zsts_dont_touch_unions.get_union.RemoveZsts.after.mir</span>
<span class="k">fn</span> <span class="nf">get_union</span><span class="p">()</span><span class="w"> </span>-&gt; <span class="nc">Foo</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="n">Foo</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">x</span>: <span class="p">()</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</code></pre></div>
<p>then becomes</p>
<div class="codehilite"><pre><span></span><code>fn get_union() -&gt; Foo {
    let mut _0: Foo;                     // return place in scope 0 at $DIR/remove_zsts_dont_touch_unions.rs:12:19: 12:22
    let mut _1: ();                      // in scope 0 at $DIR/remove_zsts_dont_touch_unions.rs:13:14: 13:16

    bb0: {
        StorageLive(_1);                 // scope 0 at $DIR/remove_zsts_dont_touch_unions.rs:13:14: 13:16
        (_0.0: ()) = move _1;            // scope 0 at $DIR/remove_zsts_dont_touch_unions.rs:13:5: 13:18
        StorageDead(_1);                 // scope 0 at $DIR/remove_zsts_dont_touch_unions.rs:13:17: 13:18
        return;                          // scope 0 at $DIR/remove_zsts_dont_touch_unions.rs:14:2: 14:2
    }
}
</code></pre></div>
<p>and now, instead of the union field, <code>_1</code> is read and never written</p>
<p>we could of course preserve all assignments that flow into union fields, but that would probably be too expensive</p>



<a name="231660612"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231660612" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tm <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231660612">(Mar 24 2021 at 16:05)</a>:</h4>
<p>Accessing <code>_1</code> would work, because ZST locals are excluded from the check, and with <code>_0.0: ()) = move _1;</code> in place, accessing the return place would be fine as well.</p>



<a name="231670483"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231670483" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> erikdesjardins <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231670483">(Mar 24 2021 at 17:02)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/pull/83445">https://github.com/rust-lang/rust/pull/83445</a></p>



<a name="231681286"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231681286" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231681286">(Mar 24 2021 at 18:03)</a>:</h4>
<p><span class="user-mention" data-user-id="352985">@tm</span>  are you <code>@tmiasko</code> on GitHub? There's also a <code>@TM</code> here on Zulip... all very confusing.^^</p>



<a name="231681526"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231681526" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231681526">(Mar 24 2021 at 18:04)</a>:</h4>
<p><span class="user-mention silent" data-user-id="352985">tm</span> <a href="#narrow/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24/near/231660612">said</a>:</p>
<blockquote>
<p>Accessing <code>_1</code> would work, because ZST locals are excluded from the check, and with <code>_0.0: ()) = move _1;</code> in place, accessing the return place would be fine as well.</p>
</blockquote>
<p>indeed, ZST accesses "don't actually happen" in Miri</p>



<a name="231681641"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231681641" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231681641">(Mar 24 2021 at 18:05)</a>:</h4>
<p><span class="user-mention silent" data-user-id="352985">tm</span> <a href="#narrow/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24/near/231639296">said</a>:</p>
<blockquote>
<p>Destination propagation ignores unions to avoid the issue in MIRI.</p>
</blockquote>
<p>hm, I guess that works but it sounds like more of a work-around than a solution? We should decide if this is "good MIR" that Miri should support, or if there truly is something about this MIR that we consider invalid.</p>



<a name="231681922"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231681922" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231681922">(Mar 24 2021 at 18:07)</a>:</h4>
<p><span class="user-mention silent" data-user-id="352985">tm</span> <a href="#narrow/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24/near/231637658">said</a>:</p>
<blockquote>
<p>"lazy allocation only for unsized locals" - isn't this exactly what unsized locals are about?</p>
</blockquote>
<p>is it? I'd be much more happy if the size was somehow set at <code>StorageLive</code> time, IMO that would make a lot more sense.</p>



<a name="231681961"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231681961" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231681961">(Mar 24 2021 at 18:07)</a>:</h4>
<p>if we did lazy alloc <em>only</em> for unsized locals, couldnt an optimization such as this still cause trouble, but only when used on unsized types?</p>



<a name="231681994"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/269128-miri/topic/Cron%20Job%20Failure%202021-03-24/near/231681994" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/269128-miri/topic/Cron.20Job.20Failure.202021-03-24.html#231681994">(Mar 24 2021 at 18:07)</a>:</h4>
<p>I guess unsized unions arent a thing currently, but who knows if they might be in the future^^</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>